<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>

    /* 
     闭包
     1 代码形式  一个函数内部 又返回了一个函数 
     2 作用
        1 缓存数据 将细节隐藏起来 私有数据 
     3 缺点:
      1 容易导致内存泄漏 
     */

    // 匿名函数 自执行函数
    // const getFunc = function () {
    //   //  1 在第一个方法中 声明你要缓存的数据
    //   let list = [{ times: 1, cls: "circle", zoom: 11 }, { times: 2, cls: "circle", zoom: 13 }, { times: 3, cls: "rect", zoom: 15 }]
    //   //  地图的显示的次数
    //   let index = -1;
    //   return function () {
    //     // 2 第二个方法 会经常被调用- 还需要返回 新的数据 
    //     return list[++index];
    //   }
    // }

    // let func1 = getFunc();

    // console.log(func1());
    // console.log(func1());
    // console.log(func1());

    const getFunc = (function () {
      //  1 在第一个方法中 声明你要缓存的数据
      let list = [{ times: 1, cls: "circle", zoom: 11 }, { times: 2, cls: "circle", zoom: 13 }, { times: 3, cls: "rect", zoom: 15 }]
      //  地图的显示的次数
      let index = -1;
      return function () {
        // 2 第二个方法 会经常被调用- 还需要返回 新的数据 
        return list[++index];
      }
    })() 
 

    console.log(getFunc());
    console.log(getFunc());
    console.log(getFunc());


  </script>
</body>

</html>